﻿#ifndef CCorrectCtrOper_H
#define CCorrectCtrOper_H
/********************************************************************************
** @ Date:2025/04/18
** @ Author: HanJiaXin
** @ Description:纠偏设备操作对象
** @ Version:1.0.0
** @ ClassName:
** @ Fun:
********************************************************************************/

#include <QObject>
#include "CModBusOper.h"

class CDevDataBeltRealign;
class CCorrectCtrOper  : public QObject
{
	Q_OBJECT

public:
	CCorrectCtrOper(CDevDataBeltRealign* pDevDataBeltRealign);
	~CCorrectCtrOper();

	bool CtrDevice(SCtrInfo& stCtrInfo);
	bool GetDevData();//获取纠偏设备设备PLC数据，在上层线程的定时器中调用

private:
	bool SetAuto(SCtrInfo& stCtrInfo);//远程状态下自动
	bool SetManual(SCtrInfo& stCtrInfo);//远程状态下手动
	bool MalForeward(SCtrInfo& stCtrInfo);//远程手动正转
	bool MalForewardStop(SCtrInfo& stCtrInfo);//远程手动正转停止
	bool MalRevesal(SCtrInfo& stCtrInfo);//远程手动反转
	bool MalRevesalStop(SCtrInfo& stCtrInfo);//远程手动反转
	void SetAddrData(QVector<int>vecReVal);     //将读取的数据对应到m_sVecAddrData里面

	int writeData(int nAddr, int nData = 0);             //执行一些写值命令或者数据
private:
	CDevDataBeltRealign *m_pDevData;
	CModBusOper *m_pModBusOper;                //Modbus操作对象
	int m_nCtrCmdCurr;                         //当前控制命令
	int m_nErrCount;//读测点失败次数
	bool m_bPlcState;

};
#endif